package com.itcam.interview.pro00.disignmodel.observe;

import java.util.ArrayList;
import java.util.List;

/**
 * 具体主题类：用户
 */
class User implements Subject {
    // 观察者列表
    private List<Observer> observers = new ArrayList<>();
    // 用户名称
    private String userName;
    // 粉丝数量
    private int followerCount;

    // 构造函数，初始化用户信息
    public User(String userName) {
        this.userName = userName;
        this.followerCount = 0;
    }

    // 注册观察者
    @Override
    public void registerObserver(Observer observer) {
        observers.add(observer);
    }

    // 移除观察者
    @Override
    public void removeObserver(Observer observer) {
        observers.remove(observer);
    }

    // 通知所有观察者
    @Override
    public void notifyObservers() {
        for (Observer observer : observers) {
            observer.update(userName, followerCount);
        }
    }

    // 有新用户关注
    public void beFollowed() {
        followerCount++;
        notifyObservers();
    }
}
